package com.hmall.common.config;

import com.hmall.common.interceptor.UserInfoInterceptor;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.DispatcherServlet;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;




/*
依赖虽然被引入，但@ComponentScan默认扫描启动类所在的包及其子包，这里没在对应的扫描范围内所有没有注册。
可以@ComponentScan添加包范围；在对应模块通过spring.factories文件将对应配置类的全限定名写进去，
利用Springboot自动配置原理，其他微服务引入对应模块依赖，在启动后会进行Bean注册；
同样也还可以用@Import导入对应的Bean组件或配置类
*/


//@ConditionalOnClass是Spring Boot中的一个条件注解，
// 它可以用来指定在类路径中存在特定的类时才加载某个配置类或Bean。
// 这个注解可以用于自动配置类或普通的Spring组件中，以实现根据类路径中的情况来决定是否加载某个配置或Bean。
// 除了hm-gateway外底层都是springMVC，那要想不让网关得到这个WebMvcconfigurer配置，那就要；
// 利用SpringMVC的特点去排除它，SprngMVC都有一个DispatcherServlet的api。
@ConditionalOnClass(DispatcherServlet.class)
@Configuration
public class MvcConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(org.springframework.web.servlet.config.annotation.InterceptorRegistry registry) {
        registry.addInterceptor(new UserInfoInterceptor());
    }
}
